Mail piece production and shipping systems are examples of data processing systems whose purpose is to utilize a variety of peripheral devices to produce data which may be further implemented in a variety of applications such as for example a carrier manifest. These systems typically include an application or client communicating with a peripheral device, such as, for example, a scale or a meter. Such peripheral devices are well known in the art.
In typical use these systems determine the weight of a mail piece or the amount of postage required for the mail piece. The mail piece data obtained from such application may then be utilized in further applications such as tripping a mail machine, carrier management, or other desired mailing systems. Such mail piece production systems and shipping systems are known in the art and have developed with changes in postal regulations (such as those of the United States Postal Service, or USPS) and with proliferation of appropriate software applications. In turn, this production has served the need to automate and accelerate to accommodate growth.
These prior systems, however, do not have the capability of providing a standard interface for communicating between a variety of applications and a plurality of peripheral devices. Nor do these systems have the capability of sharing peripheral devices between multiple applications running on the same personal computer. As well, these prior systems do not provide a common interface for all peripheral devices. As user interest in customization of mailing systems applications has increased, so to has the need to provide an effective, efficient and inexpensive solution for communicating between a client and a variety of peripheral devices.
As the capabilities of data processing systems have grown, so to have the requirements that are tasked to these systems. Greater speed in these systems has given rise to more detailed-oriented applications, greater memory capability has made memory intensive applications more attractive, and detailed applications have lead to more wide spread use of previously inaccessible data processing abilities. With the spiraling growth in data processing ability, there has grown a need for more efficient, ways of programming that promote speed as well as flexibility. Flexibility, in particular, allows applications that have been designed in varied programming languages, or operating on different platforms to be able to communicate without extensive systems or file modification.
One such means of promoting flexibility within a data processing system is the use of "object-oriented" design (OOD). Object oriented programming languages are useful in removing some of the restrictions that have hampered application design due to the inflexibility of traditional programming languages.
OOD utilizes a basic element or construct known as the "object," which combines both a data structure and an intended behavior characteristic within the single element. Objects are bundles of data and the procedures which best identify the use of that data. Objects can be specific or conceptual and are often used to represent models of real-world object groupings; this has the effect of helping software applications become an organized collection of discrete objects in which data is held or moved based on the intended behavior of an object which is inherently unique. Each object knows how to perform some activity.
The objects interact and communicate with each other via messages. A message is initiated by one object for the purpose of getting a second message to perform an act such as performing the steps of a method. Information parameters may be passed along with the message so that the receiving object will have guidelines for performing its action.
Software objects share two characteristics; they all have "state" and "behavior." The State is the condition of the object expressed in variables or properties (what it knows), while behavior is implemented by performance of a method (what it can do). Packaging the object's variables, together with its methods is called "encapsulation or storing." Encapsulation is used to hide unimportant implementation details from other objects; and, this in turn provides two primary benefits to software developers. These benefits are: (1) modularity and (2) information hiding.
Modularity of objects means that the source code for an object can be written and maintained independently of the source code for other objects, thus allowing a certain autonomy of purpose for each individual object. Information hiding, on the other hand, is the ability to keep private certain of its data and methods without effecting the other objects which may depend upon it. Common dependencies among objects can maintain communication by utilizing a public interface for information sharing.
Objects interact and communicate with each other through the use of messages. Each message has three components that are necessary for receiving object to be able to perform a desired method; these are: 1) the object to whom the message is addressed; 2) the name of the method that is to be performed; and 3) the method required parameters. Because these three components alone represent what is required for methods to be activated, it is not required that objects be located within the same process in order for communication to take place. Message use, therefore, is the supporting means for object interaction. But to be of value to a particular application, objects must be able to be referenced.
Referencing is accomplished through indexing, addressing or through value assignment which can be placed in a table for use as required. Objects can also be arranged by classification. Classification is based on groupings of objects based upon properties or characteristics important to an application or requirement. Each class describes a potentially infinite set of objects that comprise the class. Object interaction can be further optimized by the use of class distinction. Classes are organizational blueprints that define the variables and methods which are common to all objects of a particular group. Values for each of the variables are assigned and allocated to memory when an assistance from a class is created. Additionally, methods can only be performed when a class instance has been allocated to memory. Thus, the most distinct advantage of class use is the ability to reuse the classes and thus further create more objects. Classes in turn can be subdivided into subclasses which inherit the state of the underlying class. The further advantage being the ability to create specialized implementations of methods.
The constant growth an expansion of software system and the hardware platforms that support them has led to the emergence of object oriented programming which reduces time and memory capacity requirements by taking advantage of certain redundancies by treating them as unique software objects.
The advantages of objects lie in the ability of objects to link performance characteristics. The linking of objects to applications is done through object linking and embedding techniques known by the acronym "OLE." This greatly optimizes the using system's ability to find data and use it effectively. Systems that utilize formats whose structure and requirements repeat, would benefit greatly from object oriented techniques. And, if the system were to be able to define its principle data requirements in the form of objects, it would inherit the advantages of he object oriented environment while maintaining the inherent systems advantages.
OOD is known in the software arts and specific discussion of application design based upon OOD is not required for a thorough understanding of the applicant's claimed invention. It is, however, one object of the present claimed invention to disclose a method and system for utilizing object oriented design for effectively and efficiently linking applications within a data production system.
The mailing systems art specifically shipping systems and carrier management systems can clearly benefit from a method that captures the peripheral device parameters and employs those methods within a system that provides a single interface server for communicating between applications and a variety of peripheral devices. Therefore it is an object of the present invention to provide a standard interface to a variety of scales and meters for use in any application. It is also an object of this invention to provide a standard interface for all types of scales and meters. It is a further object of this invention to relieve the application of the responsibility of supporting new scales and meters as they are developed. Yet another object of this invention is to allow sharing of peripheral devices between multiple applications running on the same personal computer.